#!/bin/sh

test_dict() {
	TEST_LANG=$1
	MESSAGE=$2
	EXPECTED=$3
	TEST_TEXT=$4
	TEST_BROKEN=${5:-false}

	if [ "x$MESSAGE" = x- ] ; then
		echo "testing ${TEST_LANG}"
	else
		echo "testing ${TEST_LANG} ($MESSAGE)"
	fi
	ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
		src/espeak-ng ${OPTIONS} -xq -v ${TEST_LANG} "${TEST_TEXT}" > actual.txt
	echo "${EXPECTED}" > expected.txt
	if [ x$TEST_BROKEN = xbroken ] ; then
		diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true)
	else
		diff expected.txt actual.txt || exit 1
	fi
}

##### Dictionary flags
# missing tests: only, only, stem, alt1..alt7, dot, hasdot, text, verbsf, accent_before, sentence, native

test_dict en "\$1 - \$7" "'adbl0k adv'3:s ,abs@nt'i: g,astroUInt'EstIn@L" "adblock adverse absentee gastrointestinal"
test_dict en "\$u and \$u+" "fO@ ju:_:_: and Di:; aI k@mp'e@ D'i:" "for you and thee I compare thee"
test_dict en "\$u1 and \$u1+" "aI w,oUnta#v_:_: b,Vt ju: S,Ud@v_:_: and DeI S'Udhav" "I won't have but you should have and they should have"
test_dict en "\$u2 and \$u2+" "@p,0n DIs aIvh,ad w0t aIvh'ad" "Upon this I've had what I've had"
test_dict ro "\$u3 and \$u3+" ",anum,ite d,umneat,a d'umneat,a" "anumite dumneata dumneata"
test_dict en "\$pause" "ju: n'oU It_:_: bIk'0z DIs ha#z_:_: s'Ins b,i:n" "you know it because this has since been"
test_dict en "\$brk" "_!wID,In_! wID,In_! wID,In wID'In" "within within within within"
test_dict de "\$strend" "maR'i:A: l'i:st t'o:mA:s de:n ts'aIt_|,Ungzart,i:k@l f'Or" "Maria liest Thomas den Zeitungsartikel vor"
test_dict de "\$strend2" "j'Etst _|,EtvA:" "jetzt etwa"
test_dict hu "\$unstressend" "m'EgfiJEle:Se:hEz" "megfigyeléséhez"
test_dict en "\$abbrev" ",Em,oUt,i:d'i:; 0vDI2; ,aI;,A@s'i:; ,Em,Em'oU,A@p,i:dZ'i:"  "motd of the irc mmorpg"
test_dict fi "\$double" "t'ule t:'&nne_:_: ja s'yYr r'uoka:"  "tule tänne ja syö ruokaa"
test_dict en "\$max3" "'ast@r,Iska#st@r,Iska#st@r,Isk" "*****"
test_dict sk "\$combine" "n'aobed b'esjedla" "na obed bez jedla"
test_dict en "\$verb and \$verbf \(not $verbsf\)" "O:lt'3:n@t s'u:n 'O:lt3n,eIt_:_: and '0lt3n,eIts s'u:n 'O:lt3n,eIts" "alternate soon alternate and alternates soon alternates"
test_dict en "\$noun and \$nounf" "It Iz n,0t@ d'aIdZEst t@ daIdZ'Est" "it is not a digest to digest"
test_dict en "\$verbextend" "a# d'aIdZEst t@ n,0t 'adI2d 'Ekstr@ w'3:dz h'i@3 daIdZ'Est" "a digest to not added extra words here digest"
test_dict en "\$pastf and \$past" "r'i:d t@bi r'Ed" "read to be read"
test_dict en "\$capital" "D@ p'oUlIS p'0lIS" "The Polish polish"
test_dict en "\$allcaps" ",aIt'i: h'az j,u:'Es v,i:;'Es It ha#z ,Vs" "IT HAS US vs it has us"
test_dict af "\$accent" "d'e@lte@k@n_|'o@ k'api_|'o@ _|ak'yt_|'o@" "ö ô ó"
test_dict it "\$atstart" "fig'uRatI v,U'Esse figUR'atI" "figurati vs figurati"
test_dict it "\$atend" "s,Ents2a v,U'Esse s'Entsa" "senza vs senza"
test_dict en ".replace" "m'eIlstr0m m'eIlstr0m" "mælstrom maelstrom"
# rest of the numbers are tested in other test files
test_dict en "_dpt" "z'i@roU pOInt n'aIn n'aIn" "0.99"
test_dict ru "_dpt2" "ojd;'in _:'i_: n'ojl n'ojl_d;Is;'AtYx" "1,00"
test_dict en "_0and" "t'u:h'VndrI2d@n tw'Enti" "220"
test_dict af "_^_" "(fr)avinj'O~(en) b'0st@n(af) S'ina" "avignon boston china"
test_dict en "(multiple  words)" "s'VtS _a#z" "such as"
